<!DOCTYPE html>
<html lang="zh-CN">
    <!-- title -->




<!-- keywords -->




<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" >
    <meta name="author" content="HAOJX">
    <meta name="renderer" content="webkit">
    <meta name="copyright" content="HAOJX">
    
    <meta name="keywords" content="hexo,hexo-theme,docker,kubernetes,Linux,运维">
    
    <meta name="description" content="">
    <meta http-equiv="Cache-control" content="no-cache">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <title>构建企业级云服务生态指南---CNCF云原生生态系统大览 · HAOJX |郝建勋的笔记与博客</title>
    <style type="text/css">
    @font-face {
        font-family: 'Oswald-Regular';
        src: url("/font/Oswald-Regular.ttf");
    }

    body {
        margin: 0;
    }

    header,
    footer,
    .back-top,
    .sidebar,
    .container,
    .site-intro-meta,
    .toc-wrapper {
        display: none;
    }

    .site-intro {
        position: relative;
        z-index: 3;
        width: 100%;
        /* height: 50vh; */
        overflow: hidden;
    }

    .site-intro-placeholder {
        position: absolute;
        z-index: -2;
        top: 0;
        left: 0;
        width: calc(100% + 300px);
        height: 100%;
        background: repeating-linear-gradient(-45deg, #444 0, #444 80px, #333 80px, #333 160px);
        background-position: center center;
        transform: translate3d(-226px, 0, 0);
        animation: gradient-move 2.5s ease-out 0s infinite;
    }

    @keyframes gradient-move {
        0% {
            transform: translate3d(-226px, 0, 0);
        }
        100% {
            transform: translate3d(0, 0, 0);
        }
    }

</style>

    <link rel="preload" href= "/css/style.css?v=20180824" as="style" onload="this.onload=null;this.rel='stylesheet'" />
    <link rel="stylesheet" href= "/css/mobile.css?v=20180824" media="(max-width: 980px)">
    
    <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.2.5/jquery.fancybox.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'" />
    
    <!-- /*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
/* This file is meant as a standalone workflow for
- testing support for link[rel=preload]
- enabling async CSS loading in browsers that do not support rel=preload
- applying rel preload css once loaded, whether supported or not.
*/ -->
<script>
(function( w ){
	"use strict";
	// rel=preload support test
	if( !w.loadCSS ){
		w.loadCSS = function(){};
	}
	// define on the loadCSS obj
	var rp = loadCSS.relpreload = {};
	// rel=preload feature support test
	// runs once and returns a function for compat purposes
	rp.support = (function(){
		var ret;
		try {
			ret = w.document.createElement( "link" ).relList.supports( "preload" );
		} catch (e) {
			ret = false;
		}
		return function(){
			return ret;
		};
	})();

	// if preload isn't supported, get an asynchronous load by using a non-matching media attribute
	// then change that media back to its intended value on load
	rp.bindMediaToggle = function( link ){
		// remember existing media attr for ultimate state, or default to 'all'
		var finalMedia = link.media || "all";

		function enableStylesheet(){
			link.media = finalMedia;
		}

		// bind load handlers to enable media
		if( link.addEventListener ){
			link.addEventListener( "load", enableStylesheet );
		} else if( link.attachEvent ){
			link.attachEvent( "onload", enableStylesheet );
		}

		// Set rel and non-applicable media type to start an async request
		// note: timeout allows this to happen async to let rendering continue in IE
		setTimeout(function(){
			link.rel = "stylesheet";
			link.media = "only x";
		});
		// also enable media after 3 seconds,
		// which will catch very old browsers (android 2.x, old firefox) that don't support onload on link
		setTimeout( enableStylesheet, 3000 );
	};

	// loop through link elements in DOM
	rp.poly = function(){
		// double check this to prevent external calls from running
		if( rp.support() ){
			return;
		}
		var links = w.document.getElementsByTagName( "link" );
		for( var i = 0; i < links.length; i++ ){
			var link = links[ i ];
			// qualify links to those with rel=preload and as=style attrs
			if( link.rel === "preload" && link.getAttribute( "as" ) === "style" && !link.getAttribute( "data-loadcss" ) ){
				// prevent rerunning on link
				link.setAttribute( "data-loadcss", true );
				// bind listeners to toggle media back
				rp.bindMediaToggle( link );
			}
		}
	};

	// if unsupported, run the polyfill
	if( !rp.support() ){
		// run once at least
		rp.poly();

		// rerun poly on an interval until onload
		var run = w.setInterval( rp.poly, 500 );
		if( w.addEventListener ){
			w.addEventListener( "load", function(){
				rp.poly();
				w.clearInterval( run );
			} );
		} else if( w.attachEvent ){
			w.attachEvent( "onload", function(){
				rp.poly();
				w.clearInterval( run );
			} );
		}
	}


	// commonjs
	if( typeof exports !== "undefined" ){
		exports.loadCSS = loadCSS;
	}
	else {
		w.loadCSS = loadCSS;
	}
}( typeof global !== "undefined" ? global : this ) );
</script>

    <link rel="icon" href= "/assets/favicon.ico" />
    <link rel="preload" href="https://cdn.jsdelivr.net/npm/webfontloader@1.6.28/webfontloader.min.js" as="script" />
    <link rel="preload" href="https://cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js" as="script" />
    <link rel="preload" href="/scripts/main.js" as="script" />
    <link rel="preload" as="font" href="/font/Oswald-Regular.ttf" crossorigin>
    <link rel="preload" as="font" href="https://at.alicdn.com/t/font_327081_1dta1rlogw17zaor.woff" crossorigin>
    
    <!-- fancybox -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.2.5/jquery.fancybox.min.js" defer></script>
    <!-- 百度统计  -->
    
    <!-- 谷歌统计  -->
    
</head>

    
        <body class="post-body">
    
    
<header class="header">

    <div class="read-progress"></div>
    <div class="header-sidebar-menu">&#xe775;</div>
    <!-- post页的toggle banner  -->
    
    <div class="banner">
            <div class="blog-title">
                <a href="/" >HAOJX</a>
            </div>
            <div class="post-title">
                <a href="#" class="post-name">构建企业级云服务生态指南---CNCF云原生生态系统大览</a>
            </div>
    </div>
    
    <a class="home-link" href=/>HAOJX</a>
</header>
    <div class="wrapper">
        <div class="site-intro" style="







height:50vh;
">
    
    <!-- 主页  -->
    
    
    <!-- 404页  -->
            
    <div class="site-intro-placeholder"></div>
    <div class="site-intro-img" style="background-image: url(https://source.unsplash.com/collection/770996/2100x900)"></div>
    <div class="site-intro-meta">
        <!-- 标题  -->
        <h1 class="intro-title">
            <!-- 主页  -->
            
            构建企业级云服务生态指南---CNCF云原生生态系统大览
            <!-- 404 -->
            
        </h1>
        <!-- 副标题 -->
        <p class="intro-subtitle">
            <!-- 主页副标题  -->
            
            
            <!-- 404 -->
            
        </p>
        <!-- 文章页meta -->
        
            <div class="post-intros">
                <!-- 文章页标签  -->
                
                
                    <div class="post-intro-read">
                        <span>字数统计: <span class="post-count word-count">8.3k</span>阅读时长: <span class="post-count reading-time">29 min</span></span>
                    </div>
                
                <div class="post-intro-meta">
                    <span class="post-intro-calander iconfont-archer">&#xe676;</span>
                    <span class="post-intro-time">2019/01/02</span>
                    
                    <span id="busuanzi_container_page_pv" class="busuanzi-pv">
                        <span class="iconfont-archer">&#xe602;</span>
                        <span id="busuanzi_value_page_pv"></span>
                    </span>
                    
                    <span class="shareWrapper">
                        <span class="iconfont-archer shareIcon">&#xe71d;</span>
                        <span class="shareText">Share</span>
                        <ul class="shareList">
                            <li class="iconfont-archer share-qr" data-type="qr">&#xe75b;
                                <div class="share-qrcode"></div>
                            </li>
                            <li class="iconfont-archer" data-type="weibo">&#xe619;</li>
                            <li class="iconfont-archer" data-type="qzone">&#xe62e;</li>
                            <li class="iconfont-archer" data-type="twitter">&#xe634;</li>
                            <li class="iconfont-archer" data-type="facebook">&#xe67a;</li>
                        </ul>
                    </span>
                </div>
            </div>
        
    </div>
</div>
        <script>
 
  // get user agent
  var browser = {
    versions: function () {
      var u = window.navigator.userAgent;
      return {
        userAgent: u,
        trident: u.indexOf('Trident') > -1, //IE内核
        presto: u.indexOf('Presto') > -1, //opera内核
        webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
        gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
        mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
        ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
        android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
        iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者安卓QQ浏览器
        iPad: u.indexOf('iPad') > -1, //是否为iPad
        webApp: u.indexOf('Safari') == -1, //是否为web应用程序，没有头部与底部
        weixin: u.indexOf('MicroMessenger') == -1, //是否为微信浏览器
        uc: u.indexOf('UCBrowser') > -1 //是否为android下的UC浏览器
      };
    }()
  }
  console.log("userAgent:" + browser.versions.userAgent);

  // callback
  function fontLoaded() {
    console.log('font loaded');
    if (document.getElementsByClassName('site-intro-meta')) {
      document.getElementsByClassName('intro-title')[0].classList.add('intro-fade-in');
      document.getElementsByClassName('intro-subtitle')[0].classList.add('intro-fade-in');
      var postIntros = document.getElementsByClassName('post-intros')[0]
      if (postIntros) {
        postIntros.classList.add('post-fade-in');
      }
    }
  }

  // UC不支持跨域，所以直接显示
  function asyncCb(){
    if (browser.versions.uc) {
      console.log("UCBrowser");
      fontLoaded();
    } else {
      WebFont.load({
        custom: {
          families: ['Oswald-Regular']
        },
        loading: function () {  //所有字体开始加载
          // console.log('loading');
        },
        active: function () {  //所有字体已渲染
          fontLoaded();
        },
        inactive: function () { //字体预加载失败，无效字体或浏览器不支持加载
          console.log('inactive: timeout');
          fontLoaded();
        },
        timeout: 5000 // Set the timeout to two seconds
      });
    }
  }

  function asyncErr(){
    console.warn('script load from CDN failed, will load local script')
  }

  // load webfont-loader async, and add callback function
  function async(u, cb, err) {
    var d = document, t = 'script',
      o = d.createElement(t),
      s = d.getElementsByTagName(t)[0];
    o.src = u;
    if (cb) { o.addEventListener('load', function (e) { cb(null, e); }, false); }
    if (err) { o.addEventListener('error', function (e) { err(null, e); }, false); }
    s.parentNode.insertBefore(o, s);
  }

  var asyncLoadWithFallBack = function(arr, success, reject) {
      var currReject = function(){
        reject()
        arr.shift()
        if(arr.length)
          async(arr[0], success, currReject)
        }

      async(arr[0], success, currReject)
  }

  asyncLoadWithFallBack([
    "https://cdn.jsdelivr.net/npm/webfontloader@1.6.28/webfontloader.min.js", 
    "https://cdn.bootcss.com/webfont/1.6.28/webfontloader.js",
    "/lib/webfontloader.min.js"
  ], asyncCb, asyncErr)
</script>        
        <img class="loading" src="/assets/loading.svg" style="display: block; margin: 6rem auto 0 auto; width: 6rem; height: 6rem;" />
        <div class="container container-unloaded">
            <main class="main post-page">
    <article class="article-entry">
        <p>构建企业级云服务生态指南—-CNCF云原生生态系统大览(CNCF Cloud Native Interactive Landscape)</p>
<p>现在企业越来越多的用容器来部署自己的服务 , 有点企业早就架构了微服务 , 有的还在慢慢转向微服务 , 而到底用什么软件来部署 , 用什么软件比较好, 大家都是一头混乱 , 因为现在市面上的软件很多 , 也很繁杂 , 一天一个样子 , 学什么 , 怎么做 , 没有一个方向 , 也没有一个大纲来管理的企业架构 , 所以呆在树林里是看到到森林的 , 一定要高屋建瓴的去学 , 整体有个框架, 有一份云原生生态系统的地图 ,  所以我整理了CNCF Cloud Native Interactive Landscape   , 大部分都是比较出名的软件 , 学技术的都或多或少听过 , 下面我就来汇总介绍 , 有些没有用过 , 我们就简单介绍了 , 能有个了解即可 , 到时候再学也不迟 .</p>
<p>下面的东西看起来多,   很难的样子 , 其实就是CNCF官网的图的介绍而已 ,而且github上有托管资料 , 花点时间了解就能搞清楚了</p>
<blockquote>
<p>CNCF致力于云原生应用推广和普及 , 它在github上有个托管 , 汇总了比较流行的云原生技术 , 并加以分类 , 希望企业在构建云原生技术的时候能够有所参考 , 其github上的地址是: <a href="https://github.com/cncf/landscape" target="_blank" rel="noopener">https://github.com/cncf/landscape</a></p>
</blockquote>
<h2 id="CNCF项目的成熟度分级"><a href="#CNCF项目的成熟度分级" class="headerlink" title="CNCF项目的成熟度分级"></a>CNCF项目的成熟度分级</h2><p>CNCF旗下的项目都有成熟度分级 , 包括三种</p>
<ul>
<li>sandbox（初级）</li>
<li>incubating（孵化中）</li>
<li>graduated（毕业）</li>
</ul>
<p>现在毕业的项目有3个 , 分别是:</p>
<ul>
<li><strong>Kubernetes</strong> kubernetes2018年快年底刚刚GA的 , 2019年相信很多企业就开始部署kubernetes到生产了)</li>
<li><strong>Prometheus</strong></li>
<li><strong>Envoy</strong></li>
</ul>
<p>下图是CNCF官网的项目全景图</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fytrnd6eijj242f2ge4qs.jpg" alt=""></p>
<h2 id="CNCF全景图说明"><a href="#CNCF全景图说明" class="headerlink" title="CNCF全景图说明"></a>CNCF全景图说明</h2><ul>
<li>最上层是App Definition and Development,是容器平台上的应用层，类似于手机的 app store，图中分为数据库和数据分析、流处理、SCM 工具、CI/CD 和应用定义几类，每个公司根据业务需求会有不同的应用体系</li>
<li>第二层是容器编排和管理, 负责容器集群的调度、服务发现和资源管理</li>
<li>第三层是runtime 负责容器的计算、存储、网络</li>
<li>往下是基础设施和配置管理，作为容器底层的基石。容器可以运行在各种系统上，包括公有云、私有云、物理机等；容器还依赖自动化部署工具、容器镜像工具、安全工具等运维系统才能工作。</li>
<li>右边有两块：平台和观察分析。平台是指基于容器技术提供的平台级的服务，比如常见的 Paas 服务，和 Serverless 服务。观察分析是容器平台的运维，从日志和监控方面给出容器集群当前的运行情况，方便分析和 debug</li>
</ul>
<p>下面是一一介绍:</p>
<h3 id="App-Definition-and-Development-顶层应用程序和开发工具"><a href="#App-Definition-and-Development-顶层应用程序和开发工具" class="headerlink" title="App Definition and Development (顶层应用程序和开发工具)"></a>App Definition and Development (顶层应用程序和开发工具)</h3><p>是容器平台上的应用层，类似于手机的 app store，图中分为数据库和数据分析、流处理、SCM 工具、CI/CD 和应用定义几类，每个公司根据业务需求会有不同的应用体系</p>
<h4 id="Database-数据库"><a href="#Database-数据库" class="headerlink" title="Database(数据库)"></a>Database(数据库)</h4><p>生态图如下:</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyttdmce8bj21lt0ywn8z.jpg" alt=""></p>
<p>首先是数据库类 , 除了传统的mysql等数据库类, 还出现了为这些数据库服务的其他软件 , 比如</p>
<ul>
<li>数据库集群工具<strong>vitess</strong> , </li>
<li>SQL 数据库连接池工具 <strong>druid</strong> , </li>
<li>KV 数据库 <strong>redis、couchbase</strong>, </li>
<li>文档类数据库<strong>MongoDB、rethinkDB、ravenDB</strong></li>
<li>列式关系数据库<strong>Cassandra、Hbase、vertica</strong>,</li>
<li>column 数据库<strong>scylla</strong>（kvm 之父的作品，旨在成为下一代的 Cassandra 数据库） </li>
<li><strong>bigchainDB</strong>：区块链数据库</li>
<li><strong>carbondata</strong>：面向大数据平台的列数据文件存储格式，由国内的华为公司贡献给 Apache 基金会</li>
<li><strong>crate.io</strong>：基于 elasticsearch 的分布式 SQL 数据库，适用于需要快速搜索和聚合的查询场景</li>
<li><strong>MEMSQL</strong>：从名字也能看出来，这是一款内存数据库，特点自然是性能高，</li>
<li><strong>Noms</strong>：采用 git 思想的支持版本控制、fork和同步的数据库</li>
<li><strong>pachyderm</strong>：旨在成为一个更现代的大数据处理平台，资源调度基于 docker 和 kubernetes，底层是自己的分布式存储系统</li>
<li><strong>iguazio</strong> 和 <strong>Qubole</strong>：自动化数据分析公司</li>
<li><strong>SQL data warehous</strong>e：Azure SQL 数据库产品</li>
</ul>
<hr>
<h4 id="Streaming-amp-Messaging"><a href="#Streaming-amp-Messaging" class="headerlink" title="Streaming &amp; Messaging"></a><strong>Streaming &amp; Messaging</strong></h4><p>生态图如下:</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fytxp9e0nxj21mb0kogrb.jpg" alt=""></p>
<p>海量数据的实时采集、计算和查询 , 需要流处理与批处理对应 , 用来尽可能快得对数据进行分析，从而做出决策</p>
<ul>
<li><strong>Kinesis</strong>是亚马逊官方的流数据处理平台，是其云计算产品的一部分</li>
<li><strong>cloud dataflow</strong>是 google 的流处理产品</li>
<li><strong>Apex</strong>是 apache 旗下开源的新型实时数据处理平台</li>
<li><strong>heron</strong> 是 twitter 开源的数据处理平台，是 apache storm 的继承者</li>
<li><strong>park</strong> 和 <strong>flink</strong> 支持流处理的同时也支持批处理操作，两者定位非常相似，但内部实现的差距挺大</li>
<li><strong>pulsar</strong>是比kafka和Flink更优秀的设计 , 是下一代数据处理的新星 , 而且早早就获得了apache的顶级支持 , 更是在2018击败了kafka  , 成了一颗冉冉的新星</li>
</ul>
<hr>
<h4 id="Image-Build"><a href="#Image-Build" class="headerlink" title="Image Build"></a><strong>Image Build</strong></h4><p>生态图如下:</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fytyi4o22cj21ne0kewkc.jpg" alt=""></p>
<p>容器构建从而实现应用自动化运行在任何地方</p>
<ul>
<li><strong>apache brooklyn</strong>：应用管理平台，可以通过简单的操作把应用部署到常用的云平台</li>
<li><strong>docker compose</strong>：定义多个容器的运行关系，docker compose 可以自动化管理这些容器的构建、生命周期、和网络连通等问题</li>
<li><strong>habitat</strong>：应用自动化管理平台，可以定义应用，并且提供 Supervisor 来保证应用的正确运行</li>
<li><strong>kubeVirt</strong>：用于 kubernetes 的虚拟机运行时标准接口</li>
<li><strong>Packer</strong>：通过一个 yaml 文件，生成各种虚拟化平台的镜像</li>
<li><strong>OPEN API</strong>：标准化的 API 接口，规范化应用和服务之间的调用</li>
</ul>
<hr>
<h4 id="Continuous-Integration-amp-Delivery-CI-CD"><a href="#Continuous-Integration-amp-Delivery-CI-CD" class="headerlink" title="Continuous Integration &amp; Delivery(CI/CD)"></a><strong>Continuous Integration &amp; Delivery(CI/CD)</strong></h4><p>生态图如下:</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fytymn8cb4j21m00vedp2.jpg" alt=""></p>
<p>持续集成和持续部署主要用于自动化地处理所有的 ops 的工作，包括从代码提交一直到应用部署到线上的整个过程的自动化。CI 侧重于构建和测试，CD 侧重于部署</p>
<ul>
<li><strong>jenkins</strong> 算是这个领域的翘楚，非常经典的一款软件，功能强大稳定，拥有很丰富的插件，算是开源界使用比较广泛的工具</li>
<li><strong>travis CI</strong> 为开源的 github 项目免费，对私有项目收费，因此很多 github 上项目能看到它的身影</li>
<li>circleCI、 codeship、shippable、semaphore 都是 PaaS 产品，提供在线的 CI、CD 服务，一般提供免费和企业收费两种版本</li>
<li><strong>Bamboo</strong> 是 Atlassian 公司（开发了著名的 jira 和 confluence）旗下的产品，当然也是商业化的，需要付费才能使用</li>
<li><strong>drone</strong>：原生支持 docker 的 CI 开源产品，使用 go 编写，整个工作流都是基于 docker 的，最终也会自动化构建 docker 镜像，push 到 registry 上</li>
<li><strong>gitlab runner</strong>：gitlab 提供的 CI 工具，gitlab CI 和 gitlab runner 一起工作，前者做控制，后者实际执行任务</li>
<li><strong>spinnaker</strong>：开源的 CI 软件，可以在多个云平台运行构建和部署过程</li>
</ul>
<hr>
<h3 id="Orchestration-amp-Management（编排和管理）"><a href="#Orchestration-amp-Management（编排和管理）" class="headerlink" title="Orchestration &amp; Management（编排和管理）"></a><strong>Orchestration &amp; Management（编排和管理）</strong></h3><p>当业务越来越复杂的时候, 容器在主机上也多了起来 , 这个时候需要有个工具能够提供资源管理、容器调度和服务发现等功能，保证多主机容器能够正常工作</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyuivr4pkvj21nq098gnu.jpg" alt=""></p>
<h4 id="Scheduling-amp-Orchestration-调度和编排"><a href="#Scheduling-amp-Orchestration-调度和编排" class="headerlink" title="Scheduling &amp; Orchestration(调度和编排)"></a><strong>Scheduling &amp; Orchestration(调度和编排)</strong></h4><p>调度和集群管理一直是容器技术的热点领域，竞争也非常激烈。由于容器引擎已经有了标准化 , 非docker一家独占了 , 容器引擎终归是个可替换的部件 , 如何编排这些容器才是关键</p>
<p>集群管理竞争很激烈 , 目前来说 google 公司的 kubernetes 处于绝对的领先状态，也是目前社区发展最快的平台，随着 docker 官方支持 kubernetes，以及 azure 和 aws 。目前社区三个主流的容器调度平台是：</p>
<ul>
<li><strong>kubernetes</strong>：起源于 google 内部的 Borg 系统，率先提出 pod 的概念，提供自动化管理、服务发现、服务升级、有状态服务等等特性</li>
<li><strong>docker swarm</strong>：docker 公司官方的容器管理平台，最大的特点是和 docker 兼容的 API 和操作命令</li>
<li><strong>mesos</strong>：apache 旗下的任务调度平台，后来应用于容器调度</li>
</ul>
<p>对于公有云上的容器服务，各大云服务商也有对应的产品：</p>
<ul>
<li><strong>Amazon ECS</strong>：亚马逊推出的容器服务，特点是虚拟机收费，容器免费</li>
<li><strong>Azure Service Fabric</strong>：微软 Azure 的容器服务调度平台</li>
<li><strong>Nomad</strong>：hashicorp 旗下的数据中心调度平台，同时支持服务和任务两种 Job，也已经支持 docker 容器</li>
<li><strong>Google Cloud</strong>  , google自家推出的云平台 ,各种资源也倾向于它</li>
</ul>
<hr>
<h4 id="Coordination-amp-Service-Discovery-集群状态存储和服务发现"><a href="#Coordination-amp-Service-Discovery-集群状态存储和服务发现" class="headerlink" title="Coordination &amp; Service Discovery(集群状态存储和服务发现)"></a><strong>Coordination &amp; Service Discovery(集群状态存储和服务发现)</strong></h4><p>有了容器管理工具 , 主机上的容器服务越来越多 , 遇到的一个问题就是这么让这些容器互相发现对方 , 做服务发现, 因为容器是不断变化的 , 不停的创建和销毁 , ip也在变 . 如何能够保存这些集群状态, 并保证不会发生错误和冲突</p>
<p>生态图如下:</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyuizd3qukj21l4098768.jpg" alt=""></p>
<p>集群的状态会保存在一个分布式键值存储系统中 , 保证数据的一致性 , 目前来说流行三款:</p>
<ul>
<li><strong>Zookeeper</strong>：Hadoop 的一个子项目，本来是作为 Hadoop 集群管理的数据存储，目前也被应用到容器领域，开发语言是 Java。一个缺点是使用和维护比较复杂</li>
<li><strong>Consul</strong>：HashiCorp 开发的分布式服务发现和配置管理工具，docker swarm 集群之前默认使用的就是这个</li>
<li><strong>Etcd</strong>：CoreOS 旗下的键值存储工具，是 kubernetes 默认的选择，因此使用范围很广</li>
</ul>
<p>有了分布式键值存储保证一致性，还需要工具把集群数据自动写入到里面，并且需要格式化地读取和解析数据 . 工具有：</p>
<ul>
<li><strong>Registrator</strong>：自动监控 docker 容器，把每个容器的信息（IP、端口等）写入到键值存储中，支持 etcd、Consul</li>
<li><strong>SkyDNS</strong>：基于 etcd 中的数据，对外提供 DNS 数据查询，是对 etcd 的一层封装。因为使用 etcd，所以 DNS 查询是实时的，避免了缓存导致的问题</li>
<li><strong>CoreDNS</strong>：SkyDNS 继承者，主要特点是插件系统能完成各种各样的功能</li>
<li><strong>ContainerPilot</strong>：Joyent 开源的容器服务发现工具，作为容器的 init 系统运行，通过定义一个 json 文件，它会把容器相关的信息更新到 consul 中、进行健康检查、运行用户定义的代码等</li>
</ul>
<p>除外，还有两个公司开源的服务发现工具要提一下：</p>
<ul>
<li><strong>SmartStack</strong>：Airbnb 开源的服务发现工具，由 nerve 和 synapse 组成，安装和运维相对复杂了些</li>
<li><strong>netflix OSS Eureka</strong>：netflix 开源的用于 AWS 的服务发现工具</li>
</ul>
<p>总的来说，这些工具保证这个集群的动态信息能统一保存，并保证一致性，这样每个节点和容器就能正确地获取到集群当前的信息。</p>
<hr>
<h4 id="Service-Proxy-服务代理"><a href="#Service-Proxy-服务代理" class="headerlink" title="Service Proxy (服务代理)"></a>Service Proxy (服务代理)</h4><p>对于负载均衡来说，HAProxy、nginx 和 F5 都是常用的方案，Traefik 是后起之秀，专门为微服务设计；RPC 框架用来在微服务内部进行通信，因为比 HTTP API 效率高而被大量使用，常用的用 Google 开源的 GRPC 、apache 旗下的 thrift 框架、Netflix 开源的自带负载均衡的 ribbon 和 avra 数据序列化框架</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyujqry854j21ki0dydip.jpg" alt=""></p>
<hr>
<h4 id="API-Gateway-API-代理"><a href="#API-Gateway-API-代理" class="headerlink" title="API Gateway(API 代理)"></a>API Gateway(API 代理)</h4><p>微服务 gateway 是统一化管理 API 注册接入、权限认证、限速、日志等功能，是微服务对外的接口。</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyujtmh986j21hg0a8dhu.jpg" alt=""></p>
<ul>
<li><strong>Kong</strong>：Mashape 开源的项目，基于 openrestry（Nginx + Lua） 的微服务网关，以插件为中心组织功能</li>
<li><strong>Netflix Zuul</strong>：Netflix 微服务网关，使用 Java 开发，因此适用于 Java 应用，需要添加代码来使用 Zuul 提供的功能</li>
<li><strong>Nginx</strong>：Nginx Plus 产品为企业提供负载均衡、代理、微服务网关的各种功能</li>
<li><strong>3scale</strong>：红帽公司的 API 网关工具</li>
</ul>
<p>这个领域也有一些公司在提供产品，比如 datawire 就专门为 kubernetes 应用提供 API gateway 和自动化源码部署的工具。</p>
<p>微服务开发框架 Hystrix 是 Netflix 开源的项目，能够帮助程序处理微服务交互的超时处理和容错的问题，提供熔断、隔离、降级等功能，但是只能用于 Java 语言项目，需要在程序中修改代码。</p>
<hr>
<h4 id="Service-Mesh"><a href="#Service-Mesh" class="headerlink" title="Service Mesh"></a>Service Mesh</h4><p>是把微服务通用的功能单独抽象为一层，部署在容器管理平台中，对应用透明，并且通过简单自动化的接口来控制整个微服务的连通、灰度访问、升级、降级等功能</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyujuwkxf3j21390a1my6.jpg" alt=""></p>
<ul>
<li><strong>linkerd</strong>：开源的网络代理服务，使用 scala 语言编写，最早提出了 service mesh 的概念</li>
<li><strong>envoy</strong>：C++ 编写的网络代理工具，和 linkerd 的定位相同，turbine labs 公司专门提供 envoy 的部署和管理工作</li>
<li><strong>Istio</strong>：Google、IBM 和 Lyft 联合发布的微服务管理、配置和监控框架，使用 envoy 或者 linkerd 作为内部 worker，控制层面负责配置和管理，深度集成到 kubernetes 平台</li>
</ul>
<p>service mesh 相较于之前微服务框架的最大优势是它对业务是透明的，不需要像 Netflix 提供的很多微服务工具那样对应用有侵入性，因此就不再和任何语言绑定，可以看做整个网络栈的另一个抽象层。</p>
<hr>
<h3 id="Runtime-运行时"><a href="#Runtime-运行时" class="headerlink" title="Runtime (运行时)"></a>Runtime (运行时)</h3><p>容器运行时这块是容器核心的技术，关注的是主机容器的技术模块，分为计算、存储、网络三块。</p>
<h4 id="Cloud-Native-Storage-网络存储"><a href="#Cloud-Native-Storage-网络存储" class="headerlink" title="Cloud-Native Storage (网络存储)"></a>Cloud-Native Storage (网络存储)</h4><p>因为容器存活时间很短的特点，容器的状态（存储的数据）必须独立于容器的生命周期，也因为此，容器的存储变得非常重要 , 下面是几种</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyuk6r17lnj21ll0qmn4m.jpg" alt=""></p>
<ul>
<li><strong>Ceph</strong>：分布式存储系统，同时支持块存储、文件存储和对象存储，发展时间很久，稳定性也得到了验证。之前在 openstack 社区被广泛使用，目前在容器社区也是很好的选项。</li>
<li><strong>GlusterFS</strong>：RedHat 旗下的产品，部署简单，扩展性强，</li>
<li><strong>Hadoop HDFS</strong>：Apache 基金会下的开源文件系统项目，在大数据领域广泛使用，基于 GFS 理念的开源版本。主节点保存元数据，并负责数据分布、复制、备份决策，工作节点存储数据，每个数据会有多个副本，保存在不同的工作节点</li>
<li><strong>SheepDog</strong>：起源于日本的块存储开源项目，设计之初是为了用于虚拟化平台 QEMU</li>
<li><strong>Swift</strong>：openstack 项目提供的对象存储工具</li>
<li><strong>LeoFS</strong>：高可用、分布式的对象存储系统，海量数据支持比较好，提供 HTTP、S3、NFS 等接口访问</li>
<li><strong>minio</strong>：开源的对象存储软件，提供和 AWS S3 兼容的接口，简单易用</li>
</ul>
<p>除了这些开源的存储技术之外，还有很多容器存储圈的技术公司：</p>
<ul>
<li><strong>DELL EMC</strong>：商业存储的典范，提供企业级各种需求的存储解决方案，作为商业存储的大哥，自然也会在容器存储上发力</li>
<li><strong>NetApp</strong>：致力于混合云的存储方案，是一家老牌的公司，在存储行业深耕多年</li>
<li><strong>Datera</strong>：一家存储创业公司，主要产品是 EDF(Elastic Data Fabric)，提供 API 优先的企业级存储方案，有纯软件和一体机两种不同的版本</li>
<li><strong>Diamanti：Diamanti</strong> 一家超融合基础设施初创公司，主要为企业数据中心提供基于容器的硬件及软件支持服务</li>
<li><strong>Hedvig</strong>：为私有云和混合云提供统一的数据存储服务，为虚拟机和容器提供软件定义存储</li>
<li><strong><a href="https://infinit.sh/" target="_blank" rel="noopener">Infinit</a></strong>：开源的软件定义存储公司，之前是做文件跨平台传输的。产品也是统一的存储平台，为各种计算平台提供块存储、对象存储和文件存储等接口。已经被 docker 收购</li>
<li><strong>Pure Storage</strong>：一家明星存储创业公司，最大的特定是对闪存的支持</li>
<li><strong>StorageOS</strong>：为容器提供分布式存储的统一视图，对上层提供 API 实现存储的自动化管理，作为容器部署。产品也分为免费版和收费版</li>
<li><strong>Quobyte</strong>：数据中心文件系统，被 kubernetes volume 插件直接支持</li>
</ul>
<p>因为不同用户对存储需求不同，采取的存储方案也不同，不管是开源方案、商业方案还是自研方案，或者是文件存储、对象存储还是块存储，怎么把这些技术用到容器平台，以及保证标准化和统一化的接口，是非常有挑战性的事情，目前也有很多努力：</p>
<ul>
<li><strong><a href="https://github.com/container-storage-interface/spec" target="_blank" rel="noopener">CSI</a></strong>（Container Storage Interface）：定义云应用调度平台和各种存储服务接口的项目，核心的目标就是存储 provider 只需要编写一个 driver，就能集成到任何的容器平台上</li>
<li><strong>libStorage</strong>：EMC 旗下研发的一个存储开发框架，旨在开发与容器平台无关的存储框架，大致的思想是 libstorage 来处理和容器平台的交互，存储框架只需要接入到该框架就行</li>
<li><strong>REX-Ray</strong>：基于 libStorage 实现的存储管理平台，支持大部分的存储提供商，也能运行在大多数操作系统上</li>
<li><strong>openSDS</strong>：开放的软件定义存储标准，集合各大存储厂商，提供统一管理的存储标准，隶属于 Linux 基金会</li>
<li><strong><a href="https://rook.io/" target="_blank" rel="noopener">rook</a></strong>：基于 ceph 作为后台存储技术，深度集成到 kubernetes 容器平台的容器项目，因为选择了 ceph 和 kubernetes 这两个都很热门的技术，并且提供自动部署、管理、扩展、升级、迁移、灾备和监控等功能，所以很受关注</li>
<li><strong>portworx</strong>：针对容器技术打造的，把每个节点的存储资源组成一个存储池，每个数据自动进行备份，并通过和容器平台调度深度集成保证数据高可用。分为免费版和商业版</li>
</ul>
<hr>
<h4 id="Container-Runtime-容器运行时"><a href="#Container-Runtime-容器运行时" class="headerlink" title="Container Runtime(容器运行时)"></a>Container Runtime(容器运行时)</h4><p>严格来说其实容器技术早在Linux的时候就有了 , 之后docker一家独大 , 有垄断之势 , 而且还推出了收费版, 社区反对激烈, 后来google等公司为了对抗 , 推出了rkt  , 在一番激烈角逐后, docker公司退缩 , 愿意和google等公司联合推出标准 , 成立了OCI（Open Container Initiative）</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyuka0ss05j21p30eo41c.jpg" alt=""></p>
<p>OCI（Open Container Initiative）是一个促进容器标准化的组织，主要工作是容器 runtime 和镜像的标准化协议</p>
<ul>
<li><strong>containerd</strong>：docker 公司从原来的 docker 引擎中剥离出来的容器核心功能，具有镜像管理和容器隔离两大功能，底层使用 runc</li>
<li><strong>rkt</strong>：CoreOS 公司提出的容器引擎技术，一直作为 docker 的直接竞争对手存在，对于促进容器标准化贡献很大</li>
<li><strong><a href="https://github.com/lxc/lxd" target="_blank" rel="noopener">lxd</a></strong>：基于 linux 老牌容器管理工具 lxc，旨在提供更好用的接口，最大的特色是使用容器技术提供类似虚拟机的服务</li>
<li><strong><a href="https://github.com/hyperhq/runv" target="_blank" rel="noopener">runv</a></strong>：以兼容 OCI 接口的方式管理虚拟机，支持 kvm、Xen、QEMU 等虚拟化技术。换句话说，可以直接把虚拟机作为 runtime 运行在容器集群管理平台上</li>
<li><strong>Intel Clear Containers</strong>：Intel 公司推出的容器技术</li>
<li><strong>CRI-O</strong> 是 kubernetes 推出的东西，它是 kubelet 和 OCI runtime 之间的桥梁，它内部采用 OCI 标准，因此可以兼容各种 runtime（比如 runc、Clear Container等），对上它提供 CRI 接口供 kubelet 调用。这样的话，CRI-O 的存在能够让 kubelet 使用任何 OCI 兼容的 runtime，从而绕过 docker、rkt 这种完整容器管理工具。 </li>
</ul>
<hr>
<h4 id="Cloud-Native-Network-云原生网络"><a href="#Cloud-Native-Network-云原生网络" class="headerlink" title="Cloud-Native Network (云原生网络)"></a>Cloud-Native Network (云原生网络)</h4><p>网络最重要的功能是提供不同计算资源的连通，随着虚拟化和容器技术的发展，传统的网络方案已经无法满足云计算快速增长、不断变化的网络需求。不同用户对网络的要求也越来越高：</p>
<ul>
<li>安全性：保证私有和公有云网络的安全，网络流量能够加密，不被窃听和修改</li>
<li>多租户：云计算需要同时为多个租户提供网络服务，不同租户之间互相独立而且隔离</li>
<li>快速响应：容器的生命周期大大缩短，集群的网络在实时动态变化，网络方案需要感知网络的变化，并快速提供服务</li>
<li>网络迁移：虚拟机和容器会在集群上迁移和调度，网络方案需要支持计算资源跨主机迁移后的连通</li>
<li>监控和调试：云上的网络环境，让整个网络的流量变得更加复杂，我们需要新的工具让网络可视化，并做到自动化运维</li>
<li>……</li>
</ul>
<p>因此，在云计算和容器这块涌现出很多网络解决方案和厂商，试图解决这些问题：</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyukmclskrj21lt0lpdm3.jpg" alt=""></p>
<ul>
<li><strong>cni</strong>（Container Network Interface）：kubernetes 和 CoreOS 提出的容器网络接口标准，旨在为容器平台提供统一的网络访问模式，目前很多网络方案都已经集成进来</li>
<li><strong>calico</strong>：基于 BGP 的纯三层网络方案，性能很高，并且提供强大的网络防火墙功能，以满足用户对安全性的需求</li>
<li><strong>canal</strong>：基于 flannel 和 calico 提供 kubernetes pod 之间网络防火墙的项目</li>
<li><strong>contiv</strong>：思科推出的网络方案，支持 vxlan 和 vlan 方案，提供了多租户和主机访问控制策略功能</li>
<li><strong>cilium</strong>：利用 Linux 原生技术提供的网络方案，支持 L7 和 L3、L4 层的访问策略</li>
<li><strong>flannel</strong>：CoreOS 主要的容器网络项目，主要用于 kubernetes 平台提供 pod 之间的连通性，提供多种连网方案，部署和管理简单</li>
<li><strong>midokura</strong>：日本 SDN 网络公司，主要产品是开源的 MidoNet，之前广泛用于 openstack 中，目前有很多把它应用到容器领域的尝试</li>
<li><strong>openContrail</strong>：Juniper 收购的开源网络虚拟化平台，目前已经加入 linux 基金会。OpenContrail 是一个可扩展的网络虚拟化控制层，提供了丰富的软件定义网络功能和安全性</li>
<li><strong>Open vSwitch</strong>：linux 平台的虚拟交换机软件，除了提供和 Linux 虚拟网桥类似功能外，还支持 openflow 协议</li>
<li><strong>weave net</strong>：Weaveworks 公司开源的 docker 跨主机网络方案，安装和使用都比较简单，内部也是通过 overlay 网络实现的</li>
<li><strong>romana</strong>：Panic Networks 推出的网络开源方案，基于 L3 实现的网络连通，因此没有 overlay 网络带来的性能损耗，但是只能通过 IP 网段规划来实现租户划分，不够灵活</li>
<li><strong>tigera</strong>：网络方案初创公司，主推的方案是把 flannel 和 calico 集成到一起的 canal，应用Calico的网络策略到 Flannel 中</li>
</ul>
<p>也有很多的商业公司为企业提供网络解决方案：</p>
<ul>
<li><a href="http://www.aviatrix.com/" target="_blank" rel="noopener">aviatrix</a>：混合云网络解决方案提供商，集成 AWS、Azure、Google 等公有云网络，在同一平台管理公司混合云网络</li>
<li><strong>Big Switch</strong>：下一代数据中心网络公司，提供 SDN 可编程的网络方案，主要有 Big Cloud Fabric 和 Big Monitoring Fabric 两种产品方案</li>
<li><strong>vmware NSX</strong>：虚拟化厂商 vmware 提供虚拟化网络方案</li>
<li><strong>cumulus</strong>：主要产品是 cumulus 操作系统，继承了众多的网络软件，提供丰富的网络功能。能够解除数据中心网络设备硬件和软件锁定的局面，为网络硬件带来软件的灵活特性</li>
<li><strong>nuagenetworks</strong>：致力于数据中心 SDN 网络的公司，提供解决方案</li>
</ul>
<hr>
<h3 id="Provisioning（部署）"><a href="#Provisioning（部署）" class="headerlink" title="Provisioning（部署）"></a>Provisioning（部署）</h3><p>有了物理机和虚拟机，在运行容器服务之前，我们还需要为容器准备标准化的基础环境，以及保证基础设施的自动化，Iaas 和这部分共同组成了容器平台的地基</p>
<h4 id="Automation-amp-Configuration"><a href="#Automation-amp-Configuration" class="headerlink" title="Automation &amp; Configuration"></a>Automation &amp; Configuration</h4><p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyul27x8xmj21of0m30zt.jpg" alt=""></p>
<p>自动化配置工具，保证容器运行的系统配置的一致性，并提供升级、补丁等功能，一般也可以用来 bootstrap 容器服务</p>
<ul>
<li><strong>ansible</strong> 比较简洁，用 ssh 来自动化部署，使用 python 编写</li>
<li><strong>cfEngine</strong> 是这个领域非常老的工具，可以说是配置管理的元老，用 C 编写，因此性能会更好，但是学习曲线也更曲折</li>
<li><strong>chef</strong> 用 ruby 编写，而且配置文件格式也是 ruby DSL，因此对于 ruby 程序员非常亲切友好</li>
<li><strong>saltstack</strong>采用 zeroMQ 作为消息队列，实现 master-salve 模式，兼具性能和灵活性，但同时整个系统也更加复杂</li>
<li><strong>puppet</strong> 是这个领域的老大哥，以成熟稳定著称，社区文档也更丰富</li>
<li><strong>Bosh</strong>：CloudFoundry 旗下的产品</li>
<li><strong>Cloudify</strong>：云应用编排系统，能够让用户定义软件，然后部署到不同的云环境中</li>
<li><strong>CloudFormation</strong>：AWS 提供的基础配置服务，能够通过配置文件定义要创建的各种 AWS 服务，然后一键完成集群或者系统的搭建</li>
<li><strong>Ubuntu Juju</strong>：Ubuntu 提供的管理工具，能够自动化把几百种服务部署到不同的平台</li>
<li><strong>Terraform</strong>：HashiCorp 旗下的基础设施配置工具，通过定义一份配置文件，Terraform 能够在不同云提供商运行服务，是 Infrastructure as Code 的信奉者</li>
<li><strong>Manage IQ</strong>：统一管理云主机、容器、网络、存储的 IT 平台</li>
<li><strong>kubicorn</strong>：管理多个 kubernetes 集群的工具，集群可以在不同的云上</li>
<li><strong>Helm</strong>：kubernetes 软件包安装工具，能够安装多个 kubernetes 资源，类似于 ubuntu 的 apt 工具</li>
</ul>
<hr>
<h4 id="Container-Registries"><a href="#Container-Registries" class="headerlink" title="Container Registries"></a>Container Registries</h4><p>容器仓库是容器平台的基础, 用来存放镜像 , 有许多厂商提供了仓库 , 不过国内公司都是喜欢自建仓库</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyulvv1dp8j21mj0eugpf.jpg" alt=""></p>
<ul>
<li><strong>Harbor</strong> 是开源的企业级容器镜像管理平台</li>
<li><strong>Portus</strong> 专门为 Docker registry 提供授权服务</li>
<li><strong>registry</strong>  docker 官方的镜像仓库</li>
<li><strong>ECR</strong>（Elastic Container Registry）  是亚马逊的, Azure 和 Google 云 registry、此外 <strong>Quay</strong>、<strong>project atomic</strong>、<strong>JFrog Artifactory</strong> 也是比较著名的容器镜像服务提供商</li>
</ul>
<hr>
<h4 id="Security-amp-Compliance"><a href="#Security-amp-Compliance" class="headerlink" title="Security &amp; Compliance"></a>Security &amp; Compliance</h4><p>容器安全</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyulzcw9csj21ld0m9q9a.jpg" alt=""></p>
<ul>
<li><a href="https://github.com/theupdateframework/notary" target="_blank" rel="noopener">notary</a> 和 <a href="https://github.com/theupdateframework/tuf" target="_blank" rel="noopener">tuf</a>（the update framework） 是 CNCF 旗下的两个项目，tuf 是开源的安全和验证标准，notary 是它的一个实现，notary 可以用来验证镜像的安全性，也可以用来安全地发布软件包。</li>
<li><a href="https://github.com/coreos/clair" target="_blank" rel="noopener">clair</a>：coreOS 开源的容器安全性分析工具</li>
<li><strong>twistlock</strong> 是云原生系统的安全性平台</li>
<li><strong>NeuVecto</strong>r 是网络安全分析工具</li>
<li><strong>aqua</strong> 也是容器安全平台，提供镜像、容器、用户认证、网络流量限制等多种安全功能</li>
<li><strong>anchore</strong> 提供了一系列容器环境安全分析、审查和扫描工具</li>
</ul>
<hr>
<h4 id="Key-Management"><a href="#Key-Management" class="headerlink" title="Key Management"></a>Key Management</h4><p>和安全相关的另一个问题是机密信息，包括密码数据、密钥等。</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyum15rww6j21mh0f4did.jpg" alt=""></p>
<p>Keywhiz、pinterest 开源的 knox、lyft 开源的密码存储工具 confidant 和 HashiCorp 开源的 <a href="https://www.vaultproject.io/" target="_blank" rel="noopener">vault</a>想要解决机密信息的存储，它们通过加密的方式把内容保存到后端存储中，而且提供了 auditing 等额外功能。</p>
<p><a href="https://spiffe.io/" target="_blank" rel="noopener">spiffe</a> 和 <a href="https://spiffe.io/spire/" target="_blank" rel="noopener">spire</a> 是一对的，spiffe 定义了服务的认证标准和认证信息的标准，spire 是它的一个实现，但是目前还没有达到生产可用。</p>
<hr>
<h3 id="Public"><a href="#Public" class="headerlink" title="Public"></a>Public</h3><p>公有云提供商 , 如下图:</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyum2hsyryj21ld0ehjux.jpg" alt=""></p>
<hr>
<h3 id="Platform（平台）"><a href="#Platform（平台）" class="headerlink" title="Platform（平台）"></a>Platform（平台）</h3><p>Certified Kubernetes - Distribution </p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyum8o8kfvj21od10ogyx.jpg" alt=""></p>
<p>其中数rancher最为活跃和强大 , 可以直接创建kubernetes集群, 相当于要自己部署复杂的kubernetes , rancher显然是更简单一点, 而且集成了许多功能 , 目前稳定版已经2.0 , openshift是redhat旗下的 ,而且国内大厂也有许多做的 , 比如阿里, 京东 , 华为, 七牛云等</p>
<hr>
<h4 id="Hosted"><a href="#Hosted" class="headerlink" title="Hosted"></a>Hosted</h4><p>有许多云厂商也提供kubernetes等云原生的支持 , 详细看下面图片:</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyumellh2hj21oi0s2126.jpg" alt=""></p>
<hr>
<h4 id="Installer"><a href="#Installer" class="headerlink" title="Installer"></a>Installer</h4><p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyumfs1f7yj21n80dygo5.jpg" alt=""></p>
<hr>
<h4 id="PaaS-Container-Service"><a href="#PaaS-Container-Service" class="headerlink" title="PaaS/Container Service"></a>PaaS/Container Service</h4><p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyumitxtqpj21ne0eidjj.jpg" alt=""></p>
<p>flynn 是基于 docker 容器技术的开源 PaaS 软件 ,hyper.sh 以容器接口来提供虚拟机服务</p>
<hr>
<h3 id="Observability-amp-Analysis（观察和分析）"><a href="#Observability-amp-Analysis（观察和分析）" class="headerlink" title="Observability &amp; Analysis（观察和分析）"></a>Observability &amp; Analysis（观察和分析）</h3><p>平台建立以来,我们还得知道服务运行的情况, 需要监控服务的状态 , 提早发现问题, 便于出现问题可以排查问题</p>
<h4 id="Monitoring-监控"><a href="#Monitoring-监控" class="headerlink" title="Monitoring(监控)"></a>Monitoring(监控)</h4><p>监控一般都是监控主机的cpu , 内存 ,硬盘 , io等等 , 容器的出现, 就有涌现了许多监控容器的健康状态的</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyun8p5kagj21ow101wq9.jpg" alt=""></p>
<ul>
<li><strong>zabbix</strong> 是老牌的监控工具，功能强大</li>
<li><strong>Prometheus</strong>：时序数据库，提供了工具能读取 HTTP 接口暴露的数据保存起来，提供了丰富的查询接口以及一个 web 界面</li>
<li><strong>coscale</strong>：专门为容器和微服务优化的监控平台</li>
<li><strong>Nagios</strong> 和 <strong>graphite</strong> 是另外两个经典的监控工具</li>
<li><strong>datadag</strong>也是非常好的监控工具 , 监控网络状态主机信息等</li>
<li><strong>sensu</strong>是新兴的监控工具</li>
<li><strong>grafana</strong>是图形化的监控工具 , 能够用图表表达</li>
<li><strong>influxdb</strong> 和 openTSDB 都是时序数据库，后者是基于 HBase 的。</li>
<li><strong>AWS CloudWatch</strong> 是AWS 自家的监控工具，当然是负责 AWS 云上的服务监控</li>
<li><strong>Azure Log Analytic</strong>s 是微软家日志监控工具</li>
<li><strong>sentry</strong>：业务日志监控工具 , 错误收集工具，能够集中式地查看应用的 crash report 和 traceback 信息</li>
<li><strong>server density</strong>：专注于服务监控的 SaaS 服务平台</li>
<li><strong>statsD</strong>：etsy 开源的数据统计信息，可以把数据继续发到后端的监控平台，比如 graphite</li>
<li><strong>sysdig</strong>：容器和 kubernetes 监控工具，同时提供了付费的监控服务</li>
</ul>
<hr>
<h4 id="Logging"><a href="#Logging" class="headerlink" title="Logging"></a>Logging</h4><p>日志可以提供监控功能 , 也能进行错误调试 , 便于找出错误</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyung34bgbj21on0eq0w0.jpg" alt=""></p>
<ul>
<li><strong>fluented</strong> 是一个开源的基于数据流（stream）的日志收集框架</li>
<li><strong>graylog</strong> 是另外一个开源的选择，它们的思想都是把日志从系统各处收集起来进行统一分析、过滤和管理</li>
<li><strong>elastic</strong> 提供 ELK（Elasticsearch、Logstash、Kibana） 技术栈负责日志收集，也提供在线的企业级 Saas 服务。</li>
<li><strong>loggly</strong> 是一个在线的日志分析服务，需要付费使用</li>
<li><strong>logz.io</strong> 提供管理的 ELK 在线服务，提供 ELK as a service，并且可以基于 AI 对数据进行分析；另外一家声称支持 AI 分析的日志服务公司是 loom systems</li>
<li><strong>splunk</strong> 这家公司也提供日志分析服务</li>
<li><strong>papertrail、sematext、sumologic</strong> 也都提供类似的日志分析服务。</li>
</ul>
<hr>
<h4 id="Tracing-服务调用追踪"><a href="#Tracing-服务调用追踪" class="headerlink" title="Tracing(服务调用追踪)"></a>Tracing(服务调用追踪)</h4><p>对于微服务来说，我们需要知道一个请求到底经过了哪些组件，每个组件耗费了多少时间，错误发生在中间的哪个步骤，每次调用的网络延迟是多少等等。对于使用不同语言、开发框架、数据库、和系统的微服务，我们需要有统一的跟踪标准，这就是 tracing 要做的事情。分布式的 tracing，一般都受到 google Daper 系统的设计影响</p>
<p>这些 tracing 工具都需要在应用中编写对应的代码，和 logging 和 metrics 类似，用户可以自定义要 tracing 代码块的范围和父子关系。此外，也有很多工具会自动化嵌入服务组件之间的 tracing 数据，比如之前讲过的 Istio。</p>
<p>tracing 可以和 metrics 结合一起使用，tracing 负责组件和微服务之间的数据分析，metrics 负责单个组件内的性能数据监控</p>
<p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyuns5rzk8j21o4095abf.jpg" alt=""></p>
<ul>
<li><strong>opentracing</strong>是一个开放的 tracing 接口标准和文档，提供了各种语言客户端的实现</li>
<li><strong>jaeger</strong>是Uber开源的分布式追踪系统 , 有着图形化的web界面 , 多用在kubernetes中 , 后端也用cassandra和ES等存储数据</li>
<li><strong>Zipkin</strong>是根据Google Dapper的论文设计的全链路监控系统，由Twitter公司开发。 <strong>Zipkin</strong> 以Trace 结构表示对一次请求的追踪，又把每个Trace 拆分为若干个有依赖关系的Span</li>
<li><strong>Spring Cloud</strong>为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具。使用SpringCloud开发者可以快速实现上述这些模式</li>
</ul>
<hr>
<h4 id="Chaos-Engineering"><a href="#Chaos-Engineering" class="headerlink" title="Chaos Engineering"></a>Chaos Engineering</h4><p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyunztc8ivj21m30bmjtb.jpg" alt=""></p>
<hr>
<h2 id="serverless"><a href="#serverless" class="headerlink" title="serverless"></a>serverless</h2><h3 id="Tools-工具"><a href="#Tools-工具" class="headerlink" title="Tools(工具)"></a>Tools(工具)</h3><h3 id=""><a href="#" class="headerlink" title=""></a><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyumuju90rj21pe0fm0wt.jpg" alt=""></h3><hr>
<h3 id="Framework-框架"><a href="#Framework-框架" class="headerlink" title="Framework (框架)"></a>Framework (框架)</h3><p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyumvp7bvyj21nm0fk0vs.jpg" alt=""></p>
<hr>
<h3 id="Platform"><a href="#Platform" class="headerlink" title="Platform"></a>Platform</h3><h4 id="Hosted-Platform"><a href="#Hosted-Platform" class="headerlink" title="Hosted Platform"></a>Hosted Platform</h4><p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyumx1askcj21nm0kydk3.jpg" alt=""></p>
<hr>
<h4 id="Installable-Platform"><a href="#Installable-Platform" class="headerlink" title="Installable Platform"></a>Installable Platform</h4><p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyumxja29fj21oi0etdkp.jpg" alt=""></p>
<hr>
<h3 id="Security"><a href="#Security" class="headerlink" title="Security"></a>Security</h3><p><img src="https://ws1.sinaimg.cn/large/6450e885gy1fyumzevn58j21nj0aydh7.jpg" alt=""></p>

    </article>
    <!-- license  -->
    
        <div class="license-wrapper">
            <p>原文作者：<a href="haojianxun.github.io">HAOJX</a>
            <p>原文链接：<a href="haojianxun.github.io/2019/01/02/CNCF云原生生态系统大览(CNCF-Cloud-Native-Interactive-Landscape)/">haojianxun.github.io/2019/01/02/CNCF云原生生态系统大览(CNCF-Cloud-Native-Interactive-Landscape)/</a>
            <p>发表日期：<a href="haojianxun.github.io/2019/01/02/CNCF云原生生态系统大览(CNCF-Cloud-Native-Interactive-Landscape)/">January 2nd 2019, 12:00:00 am</a>
            <p>更新日期：<a href="haojianxun.github.io/2019/01/02/CNCF云原生生态系统大览(CNCF-Cloud-Native-Interactive-Landscape)/">January 4th 2019, 5:49:42 pm</a>
            <p>版权声明：本文采用<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">知识共享署名-非商业性使用 4.0 国际许可协议</a>进行许可</p>
        </div>
    
    <!-- paginator  -->
    <ul class="post-paginator">
        <li class="next">
            
                <div class="nextSlogan">Next Post</div>
                <a href= "/2019/01/10/kubernetes的本地持久化存储--Local Persistent Volume解析/" title= "kubernetes的本地持久化存储--Local Persistent Volume解析">
                    <div class="nextTitle">kubernetes的本地持久化存储--Local Persistent Volume解析</div>
                </a>
            
        </li>
        <li class="previous">
            
                <div class="prevSlogan">Previous Post</div>
                <a href= "/2019/01/02/StorageClass--kubernetes自动创建pv的机制(Dynamic-Provisioning)/" title= "StorageClass---kubernetes自动创建pv的机制(Dynamic Provisioning)">
                    <div class="prevTitle">StorageClass---kubernetes自动创建pv的机制(Dynamic Provisioning)</div>
                </a>
            
        </li>
    </ul>
    <!-- 评论插件 -->
    <!-- 来必力City版安装代码 -->

<!-- City版安装代码已完成 -->
    
    
    <!-- partial('_partial/comment/changyan') -->
    <!--PC版-->


    
    
    <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
    <script src='//unpkg.com/valine/dist/Valine.min.js'></script>
    <div id="comment"></div>
    <script>
    new Valine({
        el: '#comment' ,
        notify:false, 
        verify:false, 
        appId: "qX8HVjkGrEtM7e6o1RGfcE5K-gzGzoHsz",
        appKey: "q6vTiIUxgUePH7KN2r1bSk6W",
        placeholder: "ヾﾉ≧∀≦)o来啊，快活啊!  如果有技术问题 , 可以在评论中留下您的昵称和邮箱 , 以便于回复",
        path:window.location.pathname, 
        avatar:'mm' 
    });
    </script>


    <!-- 评论 -->
</main>
            <!-- profile -->
            
        </div>
        <footer class="footer footer-unloaded">
    <!-- social  -->
    
    <div class="social">
        
    
        
            
                <a href="mailto:1090468413@qq.com" class="iconfont-archer email" title=email ></a>
            
        
    
        
            
                <a href="//profile-summary-for-github.com/user/haojianxun" class="iconfont-archer github" target="_blank" title=github></a>
            
        
    
        
            
                <span class="iconfont-archer wechat" title=wechat>
                  
                  <img class="profile-qr" src="/assets/example_qr.png" />
                </span>
            
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    

    </div>
    
    <!-- powered by Hexo  -->
    <div class="copyright">
        <span id="hexo-power">Powered by <a href="https://hexo.io/" target="_blank">Hexo</a></span><span class="iconfont-archer power">&#xe635;</span><span id="theme-info">theme <a href="https://github.com/fi3ework/hexo-theme-archer" target="_blank">Archer</a></span>
    </div>
    <!-- 不蒜子  -->
    
    <div class="busuanzi-container">
    
     
    <span id="busuanzi_container_site_pv">PV: <span id="busuanzi_value_site_pv"></span> :)</span>
    
    </div>
    
</footer>
    </div>
    <!-- toc -->
    
    <div class="toc-wrapper" style=
    







top:50vh;

    >
        <div class="toc-catalog">
            <span class="iconfont-archer catalog-icon">&#xe613;</span><span>CATALOG</span>
        </div>
        <ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#CNCF项目的成熟度分级"><span class="toc-number">1.</span> <span class="toc-text">CNCF项目的成熟度分级</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#CNCF全景图说明"><span class="toc-number">2.</span> <span class="toc-text">CNCF全景图说明</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#App-Definition-and-Development-顶层应用程序和开发工具"><span class="toc-number">2.1.</span> <span class="toc-text">App Definition and Development (顶层应用程序和开发工具)</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#Database-数据库"><span class="toc-number">2.1.1.</span> <span class="toc-text">Database(数据库)</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Streaming-amp-Messaging"><span class="toc-number">2.1.2.</span> <span class="toc-text">Streaming &amp; Messaging</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Image-Build"><span class="toc-number">2.1.3.</span> <span class="toc-text">Image Build</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Continuous-Integration-amp-Delivery-CI-CD"><span class="toc-number">2.1.4.</span> <span class="toc-text">Continuous Integration &amp; Delivery(CI/CD)</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Orchestration-amp-Management（编排和管理）"><span class="toc-number">2.2.</span> <span class="toc-text">Orchestration &amp; Management（编排和管理）</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#Scheduling-amp-Orchestration-调度和编排"><span class="toc-number">2.2.1.</span> <span class="toc-text">Scheduling &amp; Orchestration(调度和编排)</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Coordination-amp-Service-Discovery-集群状态存储和服务发现"><span class="toc-number">2.2.2.</span> <span class="toc-text">Coordination &amp; Service Discovery(集群状态存储和服务发现)</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Service-Proxy-服务代理"><span class="toc-number">2.2.3.</span> <span class="toc-text">Service Proxy (服务代理)</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#API-Gateway-API-代理"><span class="toc-number">2.2.4.</span> <span class="toc-text">API Gateway(API 代理)</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Service-Mesh"><span class="toc-number">2.2.5.</span> <span class="toc-text">Service Mesh</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Runtime-运行时"><span class="toc-number">2.3.</span> <span class="toc-text">Runtime (运行时)</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#Cloud-Native-Storage-网络存储"><span class="toc-number">2.3.1.</span> <span class="toc-text">Cloud-Native Storage (网络存储)</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Container-Runtime-容器运行时"><span class="toc-number">2.3.2.</span> <span class="toc-text">Container Runtime(容器运行时)</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Cloud-Native-Network-云原生网络"><span class="toc-number">2.3.3.</span> <span class="toc-text">Cloud-Native Network (云原生网络)</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Provisioning（部署）"><span class="toc-number">2.4.</span> <span class="toc-text">Provisioning（部署）</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#Automation-amp-Configuration"><span class="toc-number">2.4.1.</span> <span class="toc-text">Automation &amp; Configuration</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Container-Registries"><span class="toc-number">2.4.2.</span> <span class="toc-text">Container Registries</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Security-amp-Compliance"><span class="toc-number">2.4.3.</span> <span class="toc-text">Security &amp; Compliance</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Key-Management"><span class="toc-number">2.4.4.</span> <span class="toc-text">Key Management</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Public"><span class="toc-number">2.5.</span> <span class="toc-text">Public</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Platform（平台）"><span class="toc-number">2.6.</span> <span class="toc-text">Platform（平台）</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#Hosted"><span class="toc-number">2.6.1.</span> <span class="toc-text">Hosted</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Installer"><span class="toc-number">2.6.2.</span> <span class="toc-text">Installer</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#PaaS-Container-Service"><span class="toc-number">2.6.3.</span> <span class="toc-text">PaaS/Container Service</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Observability-amp-Analysis（观察和分析）"><span class="toc-number">2.7.</span> <span class="toc-text">Observability &amp; Analysis（观察和分析）</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#Monitoring-监控"><span class="toc-number">2.7.1.</span> <span class="toc-text">Monitoring(监控)</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Logging"><span class="toc-number">2.7.2.</span> <span class="toc-text">Logging</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Tracing-服务调用追踪"><span class="toc-number">2.7.3.</span> <span class="toc-text">Tracing(服务调用追踪)</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Chaos-Engineering"><span class="toc-number">2.7.4.</span> <span class="toc-text">Chaos Engineering</span></a></li></ol></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#serverless"><span class="toc-number">3.</span> <span class="toc-text">serverless</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Tools-工具"><span class="toc-number">3.1.</span> <span class="toc-text">Tools(工具)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#"><span class="toc-number">3.2.</span> <span class="toc-text"></span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Framework-框架"><span class="toc-number">3.3.</span> <span class="toc-text">Framework (框架)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Platform"><span class="toc-number">3.4.</span> <span class="toc-text">Platform</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#Hosted-Platform"><span class="toc-number">3.4.1.</span> <span class="toc-text">Hosted Platform</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#Installable-Platform"><span class="toc-number">3.4.2.</span> <span class="toc-text">Installable Platform</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Security"><span class="toc-number">3.5.</span> <span class="toc-text">Security</span></a></li></ol></li></ol>
    </div>
    
    <div class="back-top iconfont-archer">&#xe639;</div>
    <div class="sidebar sidebar-hide">
    <ul class="sidebar-tabs sidebar-tabs-active-0">
        <li class="sidebar-tab-archives"><span class="iconfont-archer">&#xe67d;</span><span class="tab-name">Archive</span></li>
        <li class="sidebar-tab-tags"><span class="iconfont-archer">&#xe61b;</span><span class="tab-name">Tag</span></li>
        <li class="sidebar-tab-categories"><span class="iconfont-archer">&#xe666;</span><span class="tab-name">Cate</span></li>
    </ul>
    <div class="sidebar-content sidebar-content-show-archive">
          <div class="sidebar-panel-archives">
    <!-- 在ejs中将archive按照时间排序 -->
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    <div class="total-and-search">
        <div class="total-archive">
        Total : 168
        </div>
        <!-- search  -->
        
    </div>
    
    <div class="post-archive">
    
    
    
    
    <div class="archive-year"> 2022 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/08</span><a class="archive-post-title" href= "/2022/01/08/K8s-leaderElection选主的写法套路/" >K8s leaderElection选主的写法套路</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2021 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/30</span><a class="archive-post-title" href= "/2021/12/30/k8s中如何远程执行pod命令/" >k8s中如何远程执行pod命令</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/01</span><a class="archive-post-title" href= "/2021/12/01/clientset中patch操作-策略性补丁之替换/" >clientset中patch操作-策略性补丁之替换</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/01</span><a class="archive-post-title" href= "/2021/12/01/fake-client的用法/" >fake-client的用法</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/25</span><a class="archive-post-title" href= "/2021/11/25/CRD开发中监控deployment的变化,并且显示在控制台/" >CRD开发中监控deployment的变化,并且显示在控制台</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/25</span><a class="archive-post-title" href= "/2021/11/25/k8s-reconcile中client如何使用patch/" >k8s reconcile中client如何使用patch</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/24</span><a class="archive-post-title" href= "/2021/11/24/k8s中如何发送http请求给api-server/" >k8s中如何发送http请求给api-server</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/17</span><a class="archive-post-title" href= "/2021/11/17/clientset中patch操作jsonpatch/" >clientset中patch操作:jsonpatch</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/29</span><a class="archive-post-title" href= "/2021/10/29/event的用法,-来显示资源的事件情况/" >event的用法, 来显示资源的事件情况</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/09</span><a class="archive-post-title" href= "/2021/10/09/dynamic-Client的使用方法/" >dynamic-Client的使用方法</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2020 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/15</span><a class="archive-post-title" href= "/2020/10/15/Operator介绍(1)/" >Operator介绍(1)</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/15</span><a class="archive-post-title" href= "/2020/10/15/Operator介绍(2)---以etcd-operator为例/" >Operator介绍(2)---以etcd-operator为例</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/15</span><a class="archive-post-title" href= "/2020/10/15/Operator SDK开发简介/" >Operator SDK开发简介</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/05</span><a class="archive-post-title" href= "/2020/01/05/kubernetes-的负载均衡策略/" >kubernetes 的负载均衡策略</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2019 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/01</span><a class="archive-post-title" href= "/2019/03/01/kubernetes DaemonSet是如何进行版本管理的/" >kubernetes DaemonSet是如何进行版本管理的</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/01</span><a class="archive-post-title" href= "/2019/03/01/kubernetes DaemonSet是如何保证pod只在一个节点上运行并且保证数量是1/" >kubernetes DaemonSet是如何保证pod只在一个节点上运行并且保证数量是1</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/01</span><a class="archive-post-title" href= "/2019/03/01/kubernetes deployment在滚动升级的时候如何控制新旧pod比例/" >kubernetes deployment在滚动升级的时候如何控制新旧pod比例</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/01</span><a class="archive-post-title" href= "/2019/03/01/kubernetes deployment如何控制每次更新操作只触发一个ReolicaSet以及设置保留历史个数版本/" >kubernetes deployment如何控制每次更新操作只触发一个ReolicaSet以及设置保留历史个数版本</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/01</span><a class="archive-post-title" href= "/2019/03/01/kubernetes中如何让pod指定声明使用某个特定的initializer/" >kubernetes中如何让pod指定声明使用某个特定的initializer</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/02</span><a class="archive-post-title" href= "/2019/01/02/CNCF云原生生态系统大览(CNCF-Cloud-Native-Interactive-Landscape)/" >构建企业级云服务生态指南---CNCF云原生生态系统大览</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/02</span><a class="archive-post-title" href= "/2019/01/02/StorageClass--kubernetes自动创建pv的机制(Dynamic-Provisioning)/" >StorageClass---kubernetes自动创建pv的机制(Dynamic Provisioning)</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2018 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/22</span><a class="archive-post-title" href= "/2018/12/22/kubernetes-EFK实践/" >kubernetes EFK实践</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/05</span><a class="archive-post-title" href= "/2018/12/05/kubelet是如何操作容器管理pod的/" >kubelet是如何操作容器管理pod的</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/10</span><a class="archive-post-title" href= "/2018/11/10/kubernetes CRD下篇--编写自定义控制器/" >kubernetes CRD下篇--编写自定义控制器</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/05</span><a class="archive-post-title" href= "/2018/11/05/kuberadm初始化的时候使用自定义镜像源方法/" >kuberadm初始化的时候使用自定义镜像源方法</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/03</span><a class="archive-post-title" href= "/2018/11/03/kubernetes中的Projected Volume是什么/" >kubernetes中的Projected Volume是什么</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/01</span><a class="archive-post-title" href= "/2018/11/01/kubernetes中的控制器模型-以Deployment的实现为例/" >kubernetes中的"控制器"模型-以Deployment的实现为例</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/14</span><a class="archive-post-title" href= "/2018/10/14/ginx中HTTP请求的11个阶段之第九阶段--precontent阶段/" >Nginx中HTTP请求的11个阶段之第九阶段--precontent阶段</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">06/27</span><a class="archive-post-title" href= "/2018/06/27/kubeadm的配置文件路径和意义/" >kubeadm的配置文件路径和意义</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">05/11</span><a class="archive-post-title" href= "/2018/05/11/heapster部署/" >heapster部署</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/27</span><a class="archive-post-title" href= "/2018/03/27/kubeadm init可能出现的问题/" >kubeadm init可能出现的问题</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2016 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">04/25</span><a class="archive-post-title" href= "/2016/04/25/hello-world/" >Hello World</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes  RBAC认证和serviceaccount/" >kubernetes认证和serviceaccount</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes ConfigMap/" >kubernetes ConfigMap</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes HPA/" >kubernetes HPA</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes StatefulSet/" >kubernetes StatefulSet</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes RBAC/" >kubernetes RBAC</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes dashboard部署/" >kubernetes dashboard部署</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes service实现方法和类型/" >kubernetes service实现方法和类型</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes ingress controller的配置和工作过程/" >kubernetes ingress controller的配置和工作过程</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2018 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/03</span><a class="archive-post-title" href= "/2018/11/03/kubernetes中api-server的地址改成公网ip和负载均衡/" >kubernetes中api-server的地址改成公网ip和负载均衡</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/02</span><a class="archive-post-title" href= "/2018/11/02/Kubernetes 存储插件项目：Rook/" >Kubernetes 存储插件项目：Rook</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/30</span><a class="archive-post-title" href= "/2018/10/30/Deployment 对应用进行版本控制的具体原理--以金丝雀发布（Canary Deployment）为例/" >Deployment 对应用进行版本控制的具体原理--以金丝雀发布（Canary Deployment）为例</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/15</span><a class="archive-post-title" href= "/2018/10/15/Nginx中HTTP请求的11个阶段之第七阶段--access阶段做权限控制,ip限制/" >Nginx中HTTP请求的11个阶段之第七阶段--access阶段做权限控制,ip限制</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/14</span><a class="archive-post-title" href= "/2018/10/14/Nginx中HTTP请求的11个阶段之第十阶段---content阶段(root和alias指令)/" >Nginx中HTTP请求的11个阶段之第十阶段---content阶段(root和alias指令)</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/13</span><a class="archive-post-title" href= "/2018/10/13/Nginx中HTTP请求的11个阶段之第十一个阶段---log阶段/" >Nginx中HTTP请求的11个阶段之第十一个阶段---log阶段</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/12</span><a class="archive-post-title" href= "/2018/10/12/Nginx中HTTP框架提供的变量/" >Nginx中HTTP框架提供的变量</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/10</span><a class="archive-post-title" href= "/2018/10/10/Nginx中HTTP请求的11个阶段之第一阶段----postread阶段/" >Nginx中HTTP请求的11个阶段之第一阶段----postread阶段(realip模块)</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/10</span><a class="archive-post-title" href= "/2018/10/10/Nginx中HTTP请求的11个阶段之第三阶段----find_config  (location指令)/" >Nginx中HTTP请求的11个阶段之第三阶段----find_config  (location指令)</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/10</span><a class="archive-post-title" href= "/2018/10/10/Nginx中HTTP请求的11个阶段之第二阶段和第四阶段---rewrite阶段/" >Nginx中HTTP请求的11个阶段之第二阶段和第四阶段---rewrite阶段</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/10</span><a class="archive-post-title" href= "/2018/10/10/Nginx中HTTP请求的11个阶段之第六阶段---PREACCESS (limit_req ,limit_conn模块)/" >Nginx中HTTP请求的11个阶段之第六阶段---PREACCESS (limit_req ,limit_conn模块)</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中docker连到私有仓库认证问题/" >kubernetes中docker连到私有仓库认证问题</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2018 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">08/06</span><a class="archive-post-title" href= "/2018/08/06/kubernetes中的volumes挂载类型为emptydir,在宿主机上的路径在哪/" >kubernetes中的volumes挂载类型为emptydir,在宿主机上的路径在哪</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">08/01</span><a class="archive-post-title" href= "/2018/08/01/docker是如何创建容器的pid为1的进程的/" >docker是如何创建容器的pid为1的进程的</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">07/22</span><a class="archive-post-title" href= "/2018/07/22/kubernetes中kubeconfig是什么/" >kubernetes中kubeconfig是什么?</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">07/06</span><a class="archive-post-title" href= "/2018/07/06/docker是如何做到资源限制的/" >docker是如何做到资源限制的</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">06/22</span><a class="archive-post-title" href= "/2018/06/22/Helm/" >Helm</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/24</span><a class="archive-post-title" href= "/2018/03/24/docker exec 是怎么做到进入容器里的呢？/" >docker exec 是怎么做到进入容器里的呢？</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/11</span><a class="archive-post-title" href= "/2018/03/11/docker如何修复容器中的 top 指令以及 proc 文件系统中的信息呢/" >docker如何修复容器中的 top 指令以及 /proc 文件系统中的信息呢</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2017 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">07/07</span><a class="archive-post-title" href= "/2017/07/07/docker私有仓库--docker-distribution/" >docker私有仓库--docker-distribution</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">06/22</span><a class="archive-post-title" href= "/2017/06/22/Docker 容器明文密码解决的2个方法/" >Docker 容器明文密码解决的2个方法</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">06/11</span><a class="archive-post-title" href= "/2017/06/11/docker自定义docker0网桥网络属性/" >docker自定义docker0网桥网络属性</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">06/07</span><a class="archive-post-title" href= "/2017/06/07/dockerfile常用指令/" >dockerfile常用指令</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">06/07</span><a class="archive-post-title" href= "/2017/06/07/docker网络初探/" >docker网络初探</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">05/11</span><a class="archive-post-title" href= "/2017/05/11/docker网络/" >docker网络</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">05/09</span><a class="archive-post-title" href= "/2017/05/09/docker列出镜像用法/" >docker列出镜像用法</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">04/23</span><a class="archive-post-title" href= "/2017/04/23/docker相关命令--pull , commit ,save,load/" >docker相关命令--pull , commit ,save,load</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">04/07</span><a class="archive-post-title" href= "/2017/04/07/docker私有仓库--Harbor/" >docker私有仓库--Harbor</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/17</span><a class="archive-post-title" href= "/2017/03/17/docker相关机构/" >docker相关机构</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/11</span><a class="archive-post-title" href= "/2017/03/11/docker端口映射/" >docker端口映射</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">02/15</span><a class="archive-post-title" href= "/2017/02/15/docker存储卷/" >docker存储卷</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">02/11</span><a class="archive-post-title" href= "/2017/02/11/Docker Daemon 的作用是什么/" >Docker Daemon 的作用是什么</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">02/11</span><a class="archive-post-title" href= "/2017/02/11/docker image分层构建 联合挂载/" >docker</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/24</span><a class="archive-post-title" href= "/2017/01/24/docker安装/" >docker安装</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/21</span><a class="archive-post-title" href= "/2017/01/21/docker相关概念/" >docker相关概念</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/04</span><a class="archive-post-title" href= "/2017/01/04/docker官方设置http_proxy教程/" >docker官方设置http_proxy教程</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2016 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">05/19</span><a class="archive-post-title" href= "/2016/05/19/docker镜像加速的方法/" >docker镜像加速的方法</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中查看pod内部的dns解析/" >kubernetes中查看pod内部的dns解析</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中的认证---default-token/" >kubernetes中的认证---default-token</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中的认证流程和资源请求/" >kubernetes中的认证流程和资源请求</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中的账号/" >kubernetes中的账号</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中资源yaml模板创建/" >kubernetes中资源yaml模板创建</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中网络插件地址/" >kubernetes中网络插件地址</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中进入pod运行命令/" >kubernetes进入pod方法</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中部署prometheus/" >kubernetes中部署prometheus</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中资源的引用方式/" >kubernetes中资源的引用方式</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes中部署一个服务用的简单模板/" >kubernetes中部署一个服务用的简单模板</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2021 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/28</span><a class="archive-post-title" href= "/2021/12/28/mgr.Add函数用法在mgr启动的时候会一起把这个对象也启动了/" >mgr.Add函数用法:在mgr启动的时候会一起把这个对象也启动了</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/27</span><a class="archive-post-title" href= "/2021/12/27/mgr中开启控制器选主/" >mgr中开启控制器选主</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2019 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/10</span><a class="archive-post-title" href= "/2019/09/10/kubernetes开发教程(4)自动代码生成/" >kubernetes开发教程(4)--自动代码生成</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/08</span><a class="archive-post-title" href= "/2019/09/08/kuberntes开发教程系列(3)了解和编写Custom Resources/" >kuberntes开发教程系列(3)--了解和编写Custom Resources</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/07</span><a class="archive-post-title" href= "/2019/09/07/kuberntes开发教程系列(2)  了解client-go是什么/" >kuberntes开发教程系列(2):了解client-go是什么</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/06</span><a class="archive-post-title" href= "/2019/09/06/kuberntes开发教程系列(一)认识kuberntes API/" >kuberntes开发教程系列(1):认识kuberntes API</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">06/24</span><a class="archive-post-title" href= "/2019/06/24/kubernetes持久化存储卷存储卷快照Snapshot/" >kubernetes持久化存储卷:存储卷快照Snapshot详解</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/10</span><a class="archive-post-title" href= "/2019/01/10/kubernetes的本地持久化存储--Local Persistent Volume解析/" >kubernetes的本地持久化存储--Local Persistent Volume解析</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/02</span><a class="archive-post-title" href= "/2019/01/02/kubernetes挂载卷的基本过程/" >kubernetes挂载卷的基本过程</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2018 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/21</span><a class="archive-post-title" href= "/2018/12/21/kubernetes容器日志收集方案/" >kubernetes容器日志收集方案</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/27</span><a class="archive-post-title" href= "/2018/11/27/kubernetes怎么修改与设置触发资源回收策略的默认值/" >kubernetes怎么修改与设置触发资源回收策略的默认值</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/26</span><a class="archive-post-title" href= "/2018/11/26/kubernetes中默认调度器是如何调度一个pod的到节点上的/" >kubernetes中默认调度器的调度流程是怎么进行的</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/16</span><a class="archive-post-title" href= "/2018/11/16/kubernetes中默认为pod创建的volume目录是在宿主机的什么路径/" >kubernetes中默认为pod创建的volume目录是在宿主机的什么路径</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/10</span><a class="archive-post-title" href= "/2018/11/10/kubernetes动态准入控制Initializers是什么/" >kubernetes动态准入控制Initializers是什么</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/10</span><a class="archive-post-title" href= "/2018/11/10/kubernetes是如何创建api对象的/" >kubernetes是如何创建api对象的</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/15</span><a class="archive-post-title" href= "/2018/10/15/nginx中upstream模块提供的变量(不含cache)/" >nginx中upstream模块提供的变量(不含cache)</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/15</span><a class="archive-post-title" href= "/2018/10/15/nginx中缓存用法和优化/" >nginx中缓存用法和优化</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/05</span><a class="archive-post-title" href= "/2018/10/05/nginx架构基础相关知识/" >nginx架构基础相关知识</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/05</span><a class="archive-post-title" href= "/2018/01/05/kubernetes初探/" >kubernetes初探</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes如何创建被认证的用户/" >kubernetes如何创建被认证的用户</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes存储卷/" >kubernetes存储卷</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes访问集群节点的资源/" >kubernetes访问集群节点的资源</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes组件/" >kubernetes组件</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2018 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/28</span><a class="archive-post-title" href= "/2018/09/28/kubernetes调度pod策略/" >kubernetes调度pod策略</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes资源定义清单中的apiVersion说明/" >kubernetes资源定义清单中的apiVersion说明</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes资源指标metrics-server/" >kubernetes资源指标metrics-server</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes资源清单/" >kubernetes资源清单</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2018 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/06</span><a class="archive-post-title" href= "/2018/11/06/kubernetes部署dashboard(nginx-ingress模式访问)/" >kubernetes部署dashboard(nginx-ingress模式访问)</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/20</span><a class="archive-post-title" href= "/2018/10/20/kubernetes部署metrics-server(2)/" >kubernetes部署metrics-server(2)</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes集群的外部地址和内部地址/" >kubernetes集群的外部地址和内部地址</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes高级调度方式/" >kubernetes高级调度方式</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2018 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/15</span><a class="archive-post-title" href= "/2018/10/15/nginx中的keepalive , 共享内存/" >nginx中的keepalive , 共享内存</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/15</span><a class="archive-post-title" href= "/2018/10/15/nginx使用open_file_cache提升系统性能/" >nginx使用open_file_cache提升系统性能</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/10</span><a class="archive-post-title" href= "/2018/10/10/nginx中的http反向代理流程及proxy模块/" >nginx中的http反向代理流程及proxy模块</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2016 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/11</span><a class="archive-post-title" href= "/2016/03/11/linux的五种IO模型/" >linux的五种IO模型</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/kubernetes资源限制/" >kubernetes资源限制</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> Invalid date </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span><a class="archive-post-title" href= "/2019/09/02/nginx-ingress/" >一个nginx-ingress部署示例</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2022 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/22</span><a class="archive-post-title" href= "/2022/03/22/取任意yaml资源转化为k8s资源的完全通用写法(kubectl源码的写法)/" >取任意yaml资源转化为k8s资源的完全通用写法(kubectl源码的写法)</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/05</span><a class="archive-post-title" href= "/2022/01/05/如何解析caCert,caPrikey/" >如何解析caCert,caPrikey</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/05</span><a class="archive-post-title" href= "/2022/01/05/代码自动签发证书/" >代码自动签发证书</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/03</span><a class="archive-post-title" href= "/2022/01/03/写个通用代码来模拟kubectl-apply文件/" >写个通用代码来模拟kubectl apply文件(kustomize模式)</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">01/01</span><a class="archive-post-title" href= "/2022/01/01/如何代码创建自定义用户的config文件/" >如何代码创建自定义用户的config文件</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2021 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/29</span><a class="archive-post-title" href= "/2021/12/29/如何通过grk来找gvr,或者gvr找gvk/" >如何通过grk来找gvr,或者gvr找gvk</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/26</span><a class="archive-post-title" href= "/2021/11/26/代码获取pod的日志/" >代码获取pod的日志</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/25</span><a class="archive-post-title" href= "/2021/11/25/获取资源api-reasources/" >获取资源api-reasources</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/15</span><a class="archive-post-title" href= "/2021/11/15/自定义controller如何重新拉起被删除的资源/" >自定义controller如何重新拉起被删除的资源</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/13</span><a class="archive-post-title" href= "/2021/11/13/判断某个rs是否从属于某个deployment/" >判断某个rs是否从属于某个deployment</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/05</span><a class="archive-post-title" href= "/2021/11/05/命令行中如何取到serviceaccout的token/" >命令行中如何取到serviceaccout的token</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/05</span><a class="archive-post-title" href= "/2021/11/05/如何配置token来访问api-server/" >如何配置token来访问api-server</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/25</span><a class="archive-post-title" href= "/2021/10/25/通过labelSelector来选择pod操作/" >通过labelSelector来选择pod操作</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/17</span><a class="archive-post-title" href= "/2021/10/17/初始化控制器controller-runtime中mgr的例子/" >初始化控制器controller-runtime中mgr的例子</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/29</span><a class="archive-post-title" href= "/2021/09/29/生成config和client的几种写法/" >生成config和client的几种写法</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/17</span><a class="archive-post-title" href= "/2021/09/17/强制删除ns/" >强制删除ns</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/10</span><a class="archive-post-title" href= "/2021/09/10/reconcile的时候如何判断一个资源是否已经存在/" >reconcile的时候如何判断一个资源是否已经存在</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">07/05</span><a class="archive-post-title" href= "/2021/07/05/创建config和clientset/" >创建config和clientset</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2020 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/22</span><a class="archive-post-title" href= "/2020/10/22/创建k8s用户账号/" >创建k8s用户账号</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/29</span><a class="archive-post-title" href= "/2020/09/29/如何级联删除资源/" >如何级联删除资源</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">05/17</span><a class="archive-post-title" href= "/2020/05/17/使用临时调试容器来进行调试/" >使用临时调试容器来进行调试</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2019 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/17</span><a class="archive-post-title" href= "/2019/10/17/如何取出kubectl结果里面的pod名称/" >如何取出kubectl结果里面的pod名称</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2018 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span><a class="archive-post-title" href= "/2018/12/03/yaml转json/" >yaml转json</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span><a class="archive-post-title" href= "/2018/12/03/在kubernetes中如何增加和使用node节点上的自定义资源数量/" >在kubernetes中如何增加和使用node节点上的自定义资源数量</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/25</span><a class="archive-post-title" href= "/2018/11/25/在kubernetes中如何让pod绑定在某颗cpu上/" >在kubernetes中如何让pod绑定在某颗cpu上</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/25</span><a class="archive-post-title" href= "/2018/11/25/当在kubernetes中触发了资源回收策略的时候, pod删除的序列是什么/" >当在kubernetes中触发了资源回收策略的时候, pod删除的序列是什么</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/15</span><a class="archive-post-title" href= "/2018/11/15/基于canel的网络策略/" >基于canel的网络策略</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/10</span><a class="archive-post-title" href= "/2018/11/10/在kubernetes中如何添加CRD(Custom Resource Definition)/" >在kubernetes中如何添加CRD(Custom Resource Definition)(1)</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/07</span><a class="archive-post-title" href= "/2018/11/07/prometheus报警--------通过slack发送报警内容/" >prometheus报警--------通过slack发送报警内容</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/02</span><a class="archive-post-title" href= "/2018/11/02/在kubernetes中如何给pod自动填充某些字段/" >在kubernetes中如何给pod自动填充某些默认字段</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/15</span><a class="archive-post-title" href= "/2018/10/15/nginx中的负载均衡算法/" >nginx中的负载均衡算法</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">10/12</span><a class="archive-post-title" href= "/2018/10/12/利用TravisCI同步gcr.io镜像到dockerhub/" >利用TravisCI同步gcr.io镜像到dockerhub</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/25</span><a class="archive-post-title" href= "/2018/09/25/部署一个有证书的ingress-nginx/" >部署一个有证书的ingress-nginx</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">08/08</span><a class="archive-post-title" href= "/2018/08/08/prometheus安装/" >prometheus安装</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">05/03</span><a class="archive-post-title" href= "/2018/05/03/理解docker的rootfs和分层构建联合挂载的概念/" >理解docker的rootfs和分层构建联合挂载的概念</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/29</span><a class="archive-post-title" href= "/2018/03/29/容器内配置文件和环境变量,参数的传递/" >容器内配置文件和环境变量,参数的传递</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">03/11</span><a class="archive-post-title" href= "/2018/03/11/解决kubeadm安装k8s的时候images不能下载的问题--方法2/" >解决kubeadm安装k8s的时候images不能下载的问题--方法2</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">02/13</span><a class="archive-post-title" href= "/2018/02/13/为什么kubernetes集群上master不会被调度/" >为什么kubernetes集群上master不会被调度</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">02/12</span><a class="archive-post-title" href= "/2018/02/12/使用kubeadm从0开始搭建kubernetesv1.11.1/" >使用kubeadm从0开始搭建kubernetes:v1.11.1</a>
        </li>
    
    
    
    
    
        </ul>
    
    <div class="archive-year"> 2017 </div>
    <ul class="year-list">
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">11/07</span><a class="archive-post-title" href= "/2017/11/07/tcpdump nc nmap/" >tcpdump nc nmap</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">09/22</span><a class="archive-post-title" href= "/2017/09/22/使用ssh进行git登陆和推送/" >使用ssh进行git登陆和推送</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">06/07</span><a class="archive-post-title" href= "/2017/06/07/用entrypoint脚本来初始化docker自定义配置文件-以nginx为例/" >用entrypoint脚本来初始化docker自定义配置文件-以nginx为例</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">05/25</span><a class="archive-post-title" href= "/2017/05/25/容器发展史和docker容器核心技术--chroot ,namespace和cgroups/" >容器核心技术--chroot ,namespace,cgroups,LCX,和docker</a>
        </li>
    
    
        <li class="archive-post-item">
            <span class="archive-post-date">02/05</span><a class="archive-post-title" href= "/2017/02/05/国内docker hub的加速镜像服务/" >国内docker hub的加速镜像服务</a>
        </li>
    
    </div>
  </div>
        <div class="sidebar-panel-tags">
    <div class="sidebar-tags-name">
    
        <span class="sidebar-tag-name" data-tags="kubernetes"><span class="iconfont-archer">&#xe606;</span>kubernetes</span>
    
        <span class="sidebar-tag-name" data-tags="docker"><span class="iconfont-archer">&#xe606;</span>docker</span>
    
        <span class="sidebar-tag-name" data-tags="helm"><span class="iconfont-archer">&#xe606;</span>helm</span>
    
        <span class="sidebar-tag-name" data-tags="tips"><span class="iconfont-archer">&#xe606;</span>tips</span>
    
        <span class="sidebar-tag-name" data-tags="harbor"><span class="iconfont-archer">&#xe606;</span>harbor</span>
    
        <span class="sidebar-tag-name" data-tags="docker网络"><span class="iconfont-archer">&#xe606;</span>docker网络</span>
    
        <span class="sidebar-tag-name" data-tags="heapster"><span class="iconfont-archer">&#xe606;</span>heapster</span>
    
        <span class="sidebar-tag-name" data-tags="serviceaccount"><span class="iconfont-archer">&#xe606;</span>serviceaccount</span>
    
        <span class="sidebar-tag-name" data-tags="configmap"><span class="iconfont-archer">&#xe606;</span>configmap</span>
    
        <span class="sidebar-tag-name" data-tags="HPA"><span class="iconfont-archer">&#xe606;</span>HPA</span>
    
        <span class="sidebar-tag-name" data-tags="kbuernetes statefulset"><span class="iconfont-archer">&#xe606;</span>kbuernetes statefulset</span>
    
        <span class="sidebar-tag-name" data-tags="RBAC"><span class="iconfont-archer">&#xe606;</span>RBAC</span>
    
        <span class="sidebar-tag-name" data-tags="kubernetes service"><span class="iconfont-archer">&#xe606;</span>kubernetes service</span>
    
        <span class="sidebar-tag-name" data-tags="ingress"><span class="iconfont-archer">&#xe606;</span>ingress</span>
    
        <span class="sidebar-tag-name" data-tags="prometheus"><span class="iconfont-archer">&#xe606;</span>prometheus</span>
    
        <span class="sidebar-tag-name" data-tags="kubernetes 存储卷"><span class="iconfont-archer">&#xe606;</span>kubernetes 存储卷</span>
    
        <span class="sidebar-tag-name" data-tags="kubernetes资源"><span class="iconfont-archer">&#xe606;</span>kubernetes资源</span>
    
        <span class="sidebar-tag-name" data-tags="kubernetes调度"><span class="iconfont-archer">&#xe606;</span>kubernetes调度</span>
    
        <span class="sidebar-tag-name" data-tags="linux base"><span class="iconfont-archer">&#xe606;</span>linux base</span>
    
        <span class="sidebar-tag-name" data-tags="ingress-nginx"><span class="iconfont-archer">&#xe606;</span>ingress-nginx</span>
    
        <span class="sidebar-tag-name" data-tags="Linux"><span class="iconfont-archer">&#xe606;</span>Linux</span>
    
        <span class="sidebar-tag-name" data-tags="kubernetes安装"><span class="iconfont-archer">&#xe606;</span>kubernetes安装</span>
    
        <span class="sidebar-tag-name" data-tags="git"><span class="iconfont-archer">&#xe606;</span>git</span>
    
        <span class="sidebar-tag-name" data-tags="travis"><span class="iconfont-archer">&#xe606;</span>travis</span>
    
        <span class="sidebar-tag-name" data-tags="gcr.io镜像"><span class="iconfont-archer">&#xe606;</span>gcr.io镜像</span>
    
        <span class="sidebar-tag-name" data-tags="kubernetes网络策略"><span class="iconfont-archer">&#xe606;</span>kubernetes网络策略</span>
    
    </div>
    <div class="iconfont-archer sidebar-tags-empty">&#xe678;</div>
    <div class="tag-load-fail" style="display: none; color: #ccc; font-size: 0.6rem;">
    缺失模块。<br/>
    1、请确保node版本大于6.2<br/>
    2、在博客根目录（注意不是archer根目录）执行以下命令：<br/>
    <span style="color: #f75357; font-size: 1rem; line-height: 2rem;">npm i hexo-generator-json-content --save</span><br/>
    3、在根目录_config.yml里添加配置：
    <pre style="color: #787878; font-size: 0.6rem;">
jsonContent:
  meta: false
  pages: false
  posts:
    title: true
    date: true
    path: true
    text: false
    raw: false
    content: false
    slug: false
    updated: false
    comments: false
    link: false
    permalink: false
    excerpt: false
    categories: true
    tags: true</pre>
    </div> 
    <div class="sidebar-tags-list"></div>
</div>
        <div class="sidebar-panel-categories">
    <div class="sidebar-categories-name">
    
        <span class="sidebar-category-name" data-categories="kubernetes"><span class="iconfont-archer">&#xe60a;</span>kubernetes</span>
    
        <span class="sidebar-category-name" data-categories="tips"><span class="iconfont-archer">&#xe60a;</span>tips</span>
    
        <span class="sidebar-category-name" data-categories="docker"><span class="iconfont-archer">&#xe60a;</span>docker</span>
    
        <span class="sidebar-category-name" data-categories="nginx"><span class="iconfont-archer">&#xe60a;</span>nginx</span>
    
        <span class="sidebar-category-name" data-categories="docker/tips"><span class="iconfont-archer">&#xe60a;</span>docker/tips</span>
    
        <span class="sidebar-category-name" data-categories="kuberntes"><span class="iconfont-archer">&#xe60a;</span>kuberntes</span>
    
        <span class="sidebar-category-name" data-categories="linux"><span class="iconfont-archer">&#xe60a;</span>linux</span>
    
        <span class="sidebar-category-name" data-categories="Linux-Base"><span class="iconfont-archer">&#xe60a;</span>Linux-Base</span>
    
        <span class="sidebar-category-name" data-categories="tips/docker"><span class="iconfont-archer">&#xe60a;</span>tips/docker</span>
    
    </div>
    <div class="iconfont-archer sidebar-categories-empty">&#xe678;</div>
    <div class="sidebar-categories-list"></div>
</div>
    </div>
</div> 
    <script>
    var siteMeta = {
        root: "/",
        author: "HAOJX"
    }
</script>
    <!-- CDN failover -->
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js"></script>
    <script type="text/javascript">
        if (typeof window.$ === 'undefined')
        {
            console.warn('jquery load from jsdelivr failed, will load local script')
            document.write('<script src="/lib/jquery.min.js">\x3C/script>')
        }
    </script>
    <script src="/scripts/main.js"></script>
    <!-- algolia -->
    
    <!-- busuanzi  -->
    
    <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
    
    <!-- CNZZ  -->
    
    </div>
    <!-- async load share.js -->
    
        <script src="/scripts/share.js" async></script>    
     
    <script src="/live2dw/lib/L2Dwidget.min.js?094cbace49a39548bed64abff5988b05"></script><script>L2Dwidget.init({"pluginRootPath":"live2dw/","pluginJsPath":"lib/","pluginModelPath":"assets/","tagMode":false,"debug":false,"model":{"jsonPath":"live2d-widget-model-tororo"},"display":{"position":"left","width":150,"height":300},"mobile":{"show":true},"log":false});</script></body>
</html>


